package com.employment.entity;

import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import com.mybatisflex.annotation.Table;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 职位信息实体类
 * 对应数据库表：job_position
 * 
 * @author Employment System
 * @since 1.0.0
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Table("job_position")
public class JobPosition extends BaseEntity {

    private static final long serialVersionUID = 1L;

    /**
     * 职位ID
     */
    @Id(keyType = KeyType.Auto)
    private Long jobId;

    /**
     * 公司ID
     */
    private Long companyId;

    /**
     * 职位标题
     */
    private String title;

    /**
     * 职位类别
     */
    private String category;

    /**
     * 职位描述
     */
    private String description;

    /**
     * 职位要求
     */
    private String requirements;

    /**
     * 工作职责
     */
    private String responsibilities;

    /**
     * 技能要求
     */
    private String skillsRequired;

    /**
     * 最低薪资
     */
    private BigDecimal salaryMin;

    /**
     * 最高薪资
     */
    private BigDecimal salaryMax;

    /**
     * 薪资类型：1月薪，2年薪，3日薪，4时薪
     */
    private Integer salaryType;

    /**
     * 工作经验要求
     */
    private String workExperience;

    /**
     * 学历要求
     */
    private String education;

    /**
     * 工作类型：1全职，2兼职，3实习，4远程
     */
    private Integer workType;

    /**
     * 工作地点
     */
    private String location;

    /**
     * 省份
     */
    private String province;

    /**
     * 城市
     */
    private String city;

    /**
     * 区县
     */
    private String district;

    /**
     * 详细地址
     */
    private String address;

    /**
     * 福利待遇
     */
    private String welfare;

    /**
     * 职位标签（JSON格式）
     */
    private String tags;

    /**
     * 紧急程度：0普通，1紧急，2非常紧急
     */
    private Integer urgency;

    /**
     * 浏览次数
     */
    private Integer viewCount;

    /**
     * 申请次数
     */
    private Integer applyCount;

    /**
     * 状态：0下线，1招聘中，2已暂停，3已结束
     */
    private Integer status;

    /**
     * 发布时间
     */
    private LocalDateTime publishTime;

    /**
     * 截止时间
     */
    private LocalDateTime deadline;

    /**
     * 创建人
     */
    private Long createdBy;
}